Java의 정석 [Java의 정석]Chapter6.객체지향 프로그래밍(18~19) 메서드의 실행 흐름 MyMath클래스의 'add(long a, long b)'를 호출 방법 ▶ 먼저 'MyMath mm = new MyMath();'와 같이, MyMath클래스의 인스턴스를 생성한 다음 참조변수 mm을 통해야 함 메서드의 실행 흐름 예제 ▶ 사칙연산을 위한 4개의 메서드가 정의 되어 있는 클래스 이용한 예제 → 예제 통해 클래스에 선언된 메서드를 어떻게 호출하는지 파악 가능 ... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(14~17) 메서드(method) : 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것 함수와 유사하며, 어떤 값을 입력하면 이 값으로 작업을 수행해서 결과 반환 메서드가 작업을 수행하는데 필요한 값만 넣고 원하는 결과만 얻으면 될 뿐, 내부적으로 어떤 과정을 거쳐 결과를 만들어내는지 몰라도 됨(그래서 메서드를 내부가 보이지 않는 '블랙박스(black box)'라고도 함) 메서드는 선언부(header... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(09~10) 클래스의 정의(1) - 데이터와 함수의 결합 변수 : 하나의 데이터를 저장할 수 있는 공간 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간 클래스 : 데이터와 함수의 결합(구조체+함수) 함수는 주로 데이터를 가지고 작업을 하기 때문에 많은 경우에 있어 데이터와 함수는 관계가 깊... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(05~07) 📍 주의 : 소스파일의 이름은 public class의 이름과 일치 -만약 소스파일 내에 public class가 없다면, 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관없음 소스파일(.java)과 달리 클래스파일(.class)은 클래스마다 하나씩 만들어짐 ex) 올바른 작성 예) 에 제시된 'Hello2.java'를 컴파일하면 'Hello2.class'와 'Hello3.c... JavaJava의 정석Java [Java의 정석]Chapter5.배열(20~23) 2차원 배열의 초기화 2차원 배열도 괄호{ }를 사용해서 생성과 초기화를 동시에 가능 다만, 1차원 배열보다 괄호{ }를 한번 더 써서 행별로 구분 크기가 작은 배열은 위와 같이 간단히 한 줄로 써줘도 좋지만, 다음과 같이 행별로 줄 바꿈을 해주는 것이 이해하기 쉬움 아래와 같은 테이블 형태의 데이터를 배열에 저장하려면, 국어 영어 수학 위의 문장이 수행된 후, 2차원 배열 score가 메모... JavaJava의 정석Java [Java의 정석]Chapter5.배열(24) Arrays로 배열 다루기 Arrays 클래스는 배열을 다루는데 유용한 메서드를 제공 자주 사용되는 메서드 소개(11장에서 심화) 🌼배열의 비교와 출력 - equals(), toString() toString() toString() 배열의 모든 요소를 문자열로 편하게 출력 가능 일차원 배열에만 사용 가능 다차원 배열에는 deepToString() 사용 equals() 두 배열에 저장된 모든 ... Java의 정석JavaJava [Java의 정석]Chapter6.객체지향 프로그래밍(01~04) 규칙을 이용해 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램 구성 가능 : 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 가능 클래스의 정의 : 객체를 정의해놓은 것, 객체의 설계도 또는 틀 클래스의 용도 : 객체를 생성하는데 사용 ▶ 유형의 객체 → 책상, 의자, 자동차, TV 등 ▶ 무형의 객체 → 수학공식, 프로그램 에러와 같은 논리나 개념 →클래스는 단지 객... Java의 정석JavaJava [Java의 정석]Chapter6.객체지향 프로그래밍(08) 객체배열 객체배열 : 많은 수의 객체를 다뤄야할 때 배열로 다룸 객체배열 안에 객체가 저장되는 것은 아니고, 객체의 주소가 저장됨(사실 객체배열은 참조변수들을 하나로 묶은 참조변수 배열인 것) 객체 배열을 생성하는 것은 객체를 다루기 위한 참조변수들이 만들어진 것 뿐, 객체가 자동 저장되지 않으니 객체배열의 각 요소에 저장 필수... Java의 정석JavaJava [Java의 정석] 7장 객체지향 프로그래밍 2 접근 제어자는 조상 클래스의 메소드보다 좁은 범위로 변경할 수 없다. 조상 클래스의 메소드보다 많은 수의 예외를 선언할 수 없다. 인스턴스 메소드를 static 메소드로 또는 그 반대로 변경할 수 없다. static member를 호출할 때 클래스 이름을 생략할 수 있게 해준다. 또한, 다른 클래스의 조상이 될 수 없다. 자식 클래스의 인스턴스를 생성할 때 조상 클래스의 생성자가 실행되어야 ... Java의 정석Java의 정석 [Java의 정석]Chapter1.자바를 시작하기 전에(04~06) 'Java Virtual Machine(JVM)'은 '자바를 실행하기 위한 가상 기계(컴퓨터)' 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서 반드시 JVM이 필요 일반 애플리케이션(오른쪽 그림)의 코드는 OS만 거치고 하드웨어로 전달되는데, Java 애플리케이션은 JVM을 한 번 더 거치고, 하드웨어 맞게 완전히 컴파일... JavaJava의 정석Java [Java의 정석]Chapter4.조건문과 반복문(12) 임의의 정수만들기 Math.random() 난수(임의의 수)를 얻기 위해서 Math.random() 사용 이 메서드는 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환(int로 변환하는 이유) 0.0은 범위에 포함되고(각 변에 +1 하는 이유) 1.0은 포함되지 않음 0.0 <= Math.random() < 1.0 🍟 1과 3 사이의 정수 구하는 과정 Math.random()을... JavaJava의 정석Java [Java의 정석]Chapter3.연산자(16~19) 논리 부정 연산자 ! 논리 부정 연산자 !는 조건문과 반복문에서 주로 사용 ▶ ch < 'a' || ch > 'z' 보다 ex 식 '!!b' 의 평가과정 조건 연산자 조건 연산자 : 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이며, 삼항 연산자는 조건 연산자 하나뿐임 result = (x > y) ? x : y; (괄호 생략가능) 위의 문장에서 식 'x>y'의 결과... JavaJava의 정석Java [Java의 정석]Chapter3.연산자(07~09) 형변환 연산자 형변환 : 변수나 리터럴(상수)의 타입을 다른 타입으로 변환하는 것 형변환 방법 : 형변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여줌 ▶ (타입)피연산자 괄호()는 '캐스트 연산자' 또는 '형변환 연산자'라고 하며, 형변환을 '캐스팅(casting)'이라고도 함. 형변환 연산자는 그저 피연산자의 값을 읽어서 지정된 타입으로 형변환하고 결과를 반환... JavaJava의 정석Java [Java의 정석]Chapter2.변수(01~03) 화면에 글자 출력하기-print()과 println() System.out.print() 괄호 안의 내용을 출력하고 줄바꿈을 하지 않음 System.out.println() 괄호 안의 내용을 출력하고 줄바꿈 자바는 대소문자를 구분함으로, System 입력 시 대문자 S 로 입력 덧셈 뺄셈 계산하기 변수의 선언과 저장 변수(variable)? 하나의 값을 저장할 수 있는 저장공간 변수가 필요하... JavaJava의 정석Java [Java의 정석]Chapter2.변수(07~09) 문자 리터럴과 문자열 리터럴 문자 리터럴 ❓ 문자열 리터럴 ❓ 📍 문자열 리터럴은""안에 아무런 문자도 넣지 않은 것을 허용하며, 이를 빈 문자열(empty string)이라고 함 📍 문자 리터럴은 반드시 ''안에 하나의 문자가 있어야 함 원래 String은 클래스(class)이므로, 아래와 같이 객체를 생성하는 연사자 new를 사용해야 하지만 특별히 이와 같은 표현도 허용 문자열 결합 덧셈... JavaJava의 정석Java Chapter 13 쓰레드 2) Runnable 인터페이스 구현 : Thread 객체 생성 후 Thread 인스턴스에 Runnable 객체를 넣어야 한다. 쓰레드가 Runnable 한 상태에서 cpu를 점유하게 되는데 스케줄러가 cpu를 배분해주고 쓰레드가 돌다가 끝나면 dead 상태가 된다. sleep(), wait(), join() 메서드에 의해서 쓰레드가 cpu를 점유할 수 없는 Not Runnable 한 상태로... Java의 정석Java의 정석
[Java의 정석]Chapter6.객체지향 프로그래밍(18~19) 메서드의 실행 흐름 MyMath클래스의 'add(long a, long b)'를 호출 방법 ▶ 먼저 'MyMath mm = new MyMath();'와 같이, MyMath클래스의 인스턴스를 생성한 다음 참조변수 mm을 통해야 함 메서드의 실행 흐름 예제 ▶ 사칙연산을 위한 4개의 메서드가 정의 되어 있는 클래스 이용한 예제 → 예제 통해 클래스에 선언된 메서드를 어떻게 호출하는지 파악 가능 ... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(14~17) 메서드(method) : 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것 함수와 유사하며, 어떤 값을 입력하면 이 값으로 작업을 수행해서 결과 반환 메서드가 작업을 수행하는데 필요한 값만 넣고 원하는 결과만 얻으면 될 뿐, 내부적으로 어떤 과정을 거쳐 결과를 만들어내는지 몰라도 됨(그래서 메서드를 내부가 보이지 않는 '블랙박스(black box)'라고도 함) 메서드는 선언부(header... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(09~10) 클래스의 정의(1) - 데이터와 함수의 결합 변수 : 하나의 데이터를 저장할 수 있는 공간 배열 : 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간 구조체 : 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간 클래스 : 데이터와 함수의 결합(구조체+함수) 함수는 주로 데이터를 가지고 작업을 하기 때문에 많은 경우에 있어 데이터와 함수는 관계가 깊... JavaJava의 정석Java [Java의 정석]Chapter6.객체지향 프로그래밍(05~07) 📍 주의 : 소스파일의 이름은 public class의 이름과 일치 -만약 소스파일 내에 public class가 없다면, 소스파일의 이름은 소스파일 내의 어떤 클래스의 이름으로 해도 상관없음 소스파일(.java)과 달리 클래스파일(.class)은 클래스마다 하나씩 만들어짐 ex) 올바른 작성 예) 에 제시된 'Hello2.java'를 컴파일하면 'Hello2.class'와 'Hello3.c... JavaJava의 정석Java [Java의 정석]Chapter5.배열(20~23) 2차원 배열의 초기화 2차원 배열도 괄호{ }를 사용해서 생성과 초기화를 동시에 가능 다만, 1차원 배열보다 괄호{ }를 한번 더 써서 행별로 구분 크기가 작은 배열은 위와 같이 간단히 한 줄로 써줘도 좋지만, 다음과 같이 행별로 줄 바꿈을 해주는 것이 이해하기 쉬움 아래와 같은 테이블 형태의 데이터를 배열에 저장하려면, 국어 영어 수학 위의 문장이 수행된 후, 2차원 배열 score가 메모... JavaJava의 정석Java [Java의 정석]Chapter5.배열(24) Arrays로 배열 다루기 Arrays 클래스는 배열을 다루는데 유용한 메서드를 제공 자주 사용되는 메서드 소개(11장에서 심화) 🌼배열의 비교와 출력 - equals(), toString() toString() toString() 배열의 모든 요소를 문자열로 편하게 출력 가능 일차원 배열에만 사용 가능 다차원 배열에는 deepToString() 사용 equals() 두 배열에 저장된 모든 ... Java의 정석JavaJava [Java의 정석]Chapter6.객체지향 프로그래밍(01~04) 규칙을 이용해 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램 구성 가능 : 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 가능 클래스의 정의 : 객체를 정의해놓은 것, 객체의 설계도 또는 틀 클래스의 용도 : 객체를 생성하는데 사용 ▶ 유형의 객체 → 책상, 의자, 자동차, TV 등 ▶ 무형의 객체 → 수학공식, 프로그램 에러와 같은 논리나 개념 →클래스는 단지 객... Java의 정석JavaJava [Java의 정석]Chapter6.객체지향 프로그래밍(08) 객체배열 객체배열 : 많은 수의 객체를 다뤄야할 때 배열로 다룸 객체배열 안에 객체가 저장되는 것은 아니고, 객체의 주소가 저장됨(사실 객체배열은 참조변수들을 하나로 묶은 참조변수 배열인 것) 객체 배열을 생성하는 것은 객체를 다루기 위한 참조변수들이 만들어진 것 뿐, 객체가 자동 저장되지 않으니 객체배열의 각 요소에 저장 필수... Java의 정석JavaJava [Java의 정석] 7장 객체지향 프로그래밍 2 접근 제어자는 조상 클래스의 메소드보다 좁은 범위로 변경할 수 없다. 조상 클래스의 메소드보다 많은 수의 예외를 선언할 수 없다. 인스턴스 메소드를 static 메소드로 또는 그 반대로 변경할 수 없다. static member를 호출할 때 클래스 이름을 생략할 수 있게 해준다. 또한, 다른 클래스의 조상이 될 수 없다. 자식 클래스의 인스턴스를 생성할 때 조상 클래스의 생성자가 실행되어야 ... Java의 정석Java의 정석 [Java의 정석]Chapter1.자바를 시작하기 전에(04~06) 'Java Virtual Machine(JVM)'은 '자바를 실행하기 위한 가상 기계(컴퓨터)' 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서 반드시 JVM이 필요 일반 애플리케이션(오른쪽 그림)의 코드는 OS만 거치고 하드웨어로 전달되는데, Java 애플리케이션은 JVM을 한 번 더 거치고, 하드웨어 맞게 완전히 컴파일... JavaJava의 정석Java [Java의 정석]Chapter4.조건문과 반복문(12) 임의의 정수만들기 Math.random() 난수(임의의 수)를 얻기 위해서 Math.random() 사용 이 메서드는 0.0과 1.0사이의 범위에 속하는 하나의 double값을 반환(int로 변환하는 이유) 0.0은 범위에 포함되고(각 변에 +1 하는 이유) 1.0은 포함되지 않음 0.0 <= Math.random() < 1.0 🍟 1과 3 사이의 정수 구하는 과정 Math.random()을... JavaJava의 정석Java [Java의 정석]Chapter3.연산자(16~19) 논리 부정 연산자 ! 논리 부정 연산자 !는 조건문과 반복문에서 주로 사용 ▶ ch < 'a' || ch > 'z' 보다 ex 식 '!!b' 의 평가과정 조건 연산자 조건 연산자 : 조건식, 식1, 식2 모두 세 개의 피연산자를 필요로 하는 삼항 연산자이며, 삼항 연산자는 조건 연산자 하나뿐임 result = (x > y) ? x : y; (괄호 생략가능) 위의 문장에서 식 'x>y'의 결과... JavaJava의 정석Java [Java의 정석]Chapter3.연산자(07~09) 형변환 연산자 형변환 : 변수나 리터럴(상수)의 타입을 다른 타입으로 변환하는 것 형변환 방법 : 형변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여줌 ▶ (타입)피연산자 괄호()는 '캐스트 연산자' 또는 '형변환 연산자'라고 하며, 형변환을 '캐스팅(casting)'이라고도 함. 형변환 연산자는 그저 피연산자의 값을 읽어서 지정된 타입으로 형변환하고 결과를 반환... JavaJava의 정석Java [Java의 정석]Chapter2.변수(01~03) 화면에 글자 출력하기-print()과 println() System.out.print() 괄호 안의 내용을 출력하고 줄바꿈을 하지 않음 System.out.println() 괄호 안의 내용을 출력하고 줄바꿈 자바는 대소문자를 구분함으로, System 입력 시 대문자 S 로 입력 덧셈 뺄셈 계산하기 변수의 선언과 저장 변수(variable)? 하나의 값을 저장할 수 있는 저장공간 변수가 필요하... JavaJava의 정석Java [Java의 정석]Chapter2.변수(07~09) 문자 리터럴과 문자열 리터럴 문자 리터럴 ❓ 문자열 리터럴 ❓ 📍 문자열 리터럴은""안에 아무런 문자도 넣지 않은 것을 허용하며, 이를 빈 문자열(empty string)이라고 함 📍 문자 리터럴은 반드시 ''안에 하나의 문자가 있어야 함 원래 String은 클래스(class)이므로, 아래와 같이 객체를 생성하는 연사자 new를 사용해야 하지만 특별히 이와 같은 표현도 허용 문자열 결합 덧셈... JavaJava의 정석Java Chapter 13 쓰레드 2) Runnable 인터페이스 구현 : Thread 객체 생성 후 Thread 인스턴스에 Runnable 객체를 넣어야 한다. 쓰레드가 Runnable 한 상태에서 cpu를 점유하게 되는데 스케줄러가 cpu를 배분해주고 쓰레드가 돌다가 끝나면 dead 상태가 된다. sleep(), wait(), join() 메서드에 의해서 쓰레드가 cpu를 점유할 수 없는 Not Runnable 한 상태로... Java의 정석Java의 정석